Identifying instances of media programming available from different content sources

ABSTRACT

Systems and methods are provided for identifying instances of media programming available within a media distribution system. An exemplary method involves searching a listing of media programming available from a first content source using search criteria indicative of a desired media program to identify an instance of the desired media program available from the first content source, obtaining a target program identifier associated with the desired media program from that instance, identifying another instance of the desired media program in a second listing of media programming available from another content source using the target program identifier, and providing a combined search result that indicates availability of the desired media program from the content sources.

CROSS-REFERENCE TO RELATED APPLICATIONS

This application is a continuation of U.S. patent application Ser. No.13/098,192, filed Apr. 29, 2011.

TECHNICAL FIELD

The following discussion generally relates to providing combined searchresults that identify instances of media programming satisfying receivedsearch criteria that are available from various content sources in amedia distribution system.

BACKGROUND

Media content can now be received from any number of different sources.Broadcast television content, for example, can typically be received atset-top box (STB) or other receiver that receives a direct broadcastsatellite (DBS), cable and/or terrestrial broadcast signal, and suchreceived content may also be stored in a personal or digital videorecorder (DVR) or the like for viewing at a later time (“timeshifting”). Live or recorded content can also be “placeshifted” over theInternet or another network to allow viewing at remote locations awayfrom the viewer's primary television set. In addition to the widevariety of options in viewing broadcast media content, even more contentis increasingly becoming available “on demand” from any number of filebased or streaming sources, including various network-based servicesthat provide access to a wealth of on-demand programming.

As content becomes available from a multitude of sources, however, itcan be increasingly difficult to locate related programming fromdifferent sources. Typically, different content sources provide mediacontent using different techniques and/or formats. For example, eachcontent provider may use a different format when providing metadata thatdescribes the media content being made available by that respectivecontent provider. Due to the wide variety of formats and contentsources, locating related programming from different content sources canbe a significant challenge. For example, if a viewer wishes to locate aparticular program or episode, an online media distribution service mayneed to conduct separate searches of broadcast program guides, on-demandlibraries, online video libraries, DVR contents and/or the like to tryand find the desired program using the search criteria provided by theview. The wealth of content available and the variety of the metadataformats used by the various content sources further complicates suchsearches.

As a result, it is now desirable to create systems and methods formanaging related media content from various content sources. Otherdesirable features and characteristics may also become apparent from thesubsequent detailed description and the appended claims, taken inconjunction with the accompanying drawings and this background section.

BRIEF SUMMARY

According to various exemplary embodiments, systems and methods arepresented for identifying instances of media programming availablewithin a media distribution system. In one embodiment, a server includesa memory having stored therein a first listing of media programsavailable from a first content source, such as a user's digital videorecorder, and a second listing of media programs available from a secondcontent source, such as an on-demand or online programming source. Theserver also includes a processor coupled to the memory, wherein theprocessor receives search criteria indicative of a desired media programand identifies a media data object in the first listing corresponding toan instance of the desired media program that is available from thefirst content source. The processor obtains a program identifier fromthe identified media data object, identifies a second media data objectin the second listing corresponding to another instance of the desiredmedia program that is available from the second content source, andprovides a combined search result that indicates availability of thedesired media program from the first content source and the secondcontent source.

In other embodiments, a media distribution system is provided thatincludes an associating server and a host server coupled to theassociating server over a network. The associating server is configuredto format each media data object of a plurality of media data objectsreceived from a content source, such as an on-demand or onlineprogramming source, to include a respective program identifierassociated with a respective media program corresponding to thatrespective media data object. The host server obtains the plurality ofassociated media data objects from the associating server, and receivessearch criteria indicative of a desired media program. The host serverdetermines a target program identifier associated with the desired mediaprogram, and identifies a first media data object corresponding to thedesired media program from the plurality of associated media dataobjects using the target program identifier.

In another embodiment, a method that is executable by a processingsystem is provided for identifying instances of a desired media programavailable within a media distribution system. The method involvessearching a first listing of media programming available from a firstcontent source using search criteria indicative of the desired mediaprogram to identify a first instance of the desired media programavailable from the first content source, obtaining a target programidentifier associated with the desired media program from the firstinstance, identifying a second instance of the desired media program ina second listing of media programming available from a second contentsource using the target program identifier, and providing a combinedsearch result that indicates availability of the desired media programfrom the first content source and the second content source.

Another embodiment of identifying instances of media programmingavailable within a media distribution system involves obtaining a firstmedia data object corresponding to a first media program available froma first content source in the media distribution system, formatting thefirst media data object to include a first identifier to associate thefirst media data object with the first media program, and searchingmedia programming available from a second content source in the mediadistribution system using search criteria indicative of the first mediaprogram to identify a second media data object corresponding to thefirst media program available from the second content source, whereinthe second media data object has the first identifier associatedtherewith. In response to identifying the second media data object basedon the search criteria, the method continues by obtaining the firstidentifier from the second media data object, identifying the firstmedia data object from media programming available from the firstcontent source using the first identifier, and providing a combinedsearch result that indicates availability of the first media programfrom the first content source and the second content source.

Various embodiments, aspects and other features are described in moredetail below.

BRIEF DESCRIPTION OF THE DRAWING FIGURES

Exemplary embodiments will hereinafter be described in conjunction withthe following drawing figures, wherein like numerals denote likeelements, and

FIG. 1 is a block diagram of an exemplary media distribution system;

FIG. 2 is a flowchart of an exemplary formatting process suitable foruse with the media distribution system of FIG. 1;

FIG. 3 is a flowchart of an exemplary associating process suitable foruse with the media distribution system of FIG. 1;

FIG. 4 is a flowchart of an exemplary search process suitable for usewith the media distribution system of FIG. 1; and

FIG. 5 is an exemplary user interface display illustrating the resultsof the search process of FIG. 4 in accordance with one embodiment.

DETAILED DESCRIPTION

The following detailed description of the invention is merely exemplaryin nature and is not intended to limit the invention or the applicationand uses of the invention. Furthermore, there is no intention to bebound by any theory presented in the preceding background or thefollowing detailed description.

Embodiments of the subject matter described herein generally relate toidentifying instances of a desired media program matching user-specifiedsearch criteria that are available from multiple different contentsources within a media distribution system. As described in greaterdetail below, in an exemplary embodiment, a processing system, such as ahost server, receives the search criteria provided by a user or viewerthat is indicative of the desired media program from a client devicecommunicating with the host server over a network. The host serversearches for the search criteria in media programming available from afirst content source in the media distribution system, such as theuser's digital video recorder (DVR) or a broadcast source (e.g., usingan electronic program guide), to identify an instance of the desiredmedia program available from that content source. After identifying thedesired media program from the first content source, the host serverdetermines or otherwise obtains, from the identified instance of thedesired media program available from the first content source, a targetprogram identifier that is associated with or otherwise corresponds tothe desired media program. The host server then utilizes that targetprogram identifier to identify additional instances of the desired mediaprogram that are available from other content sources in the mediadistribution system, such as, for example, online programming sourcesand/or on-demand programming sources, and provides a combined searchresult to the user/viewer that indicates availability of the desiredmedia program from various content sources within the media distributionsystem.

In accordance with one or more embodiments, a receiving server receivesmedia data objects indicative of media programs available from onlineprogramming sources and formats the media data objects using a uniformformat. An associating server then receives the uniformly formattedmedia data objects and formats them again to include, for each uniformlyformatted media data object, one or more identifiers associated with therespective media program that media data object corresponds to. Asdescribed in greater detail below, for each media data object obtainedby the associating server, the associating server determines theidentifiers associated with its corresponding media program by matchingone or more fields of metadata of the media data object to correspondingfields of metadata of a record in a database of media programs. Theassociating server then obtains the values for the identifiers from thematching record in the database and formats the media data object toinclude identifier fields having the obtained values, therebyassociating each media object with a media program record in thedatabase. The host server identifies instances of the desired mediaprogram available from the online programming sources by searching theassociated media data objects obtained from the associating server andidentifying those media data objects having values for their identifierfields that are equal to or otherwise match the target programidentifier(s).

FIG. 1 depicts an exemplary embodiment of a media distribution system100 for distributing media programs (or media content) from any numberof content sources. As used herein, “media program” (or “program”),“media content” (or “content), or variants thereof should be understoodas referring to any audio, video, audio/visual or other programming inany streaming, file-based or other format. In various embodiments, mediadistribution system 100 distributes television, movie and/or otheraudiovisual programs in any digital format, such as MPEG, Windows Media,Adobe Flash, Quicktime, Real Media, H.264 and/or the like, over anetwork 106 for presentation to a user (or viewer) on a media playbackdevice 104 (or client device), such as a desktop or notebook computer,mobile telephone, personal digital assistant, video game player,portable media player and/or any other device capable of receiving mediaprograms via a network 106 and of rendering audio and/or visual content.The exemplary media distribution system 100 of FIG. 1 includes a hostserver 102 (or host) that communicates or otherwise interacts with theclient device 104 (or client) over network 106 to provide a combinedsearch result that identifies instances of media programs satisfyingsearch criteria provided by a user of the client 104 that are availablefrom different content sources within the media distribution system 100,such as, for example, instances of a desired media program stored by amedia device 108 (e.g., on DVR 110), instances of the desired mediaprogram available from a broadcast source 112, instances of the desiredmedia program available from an on-demand programming source 114, and/orinstances of the desired media program available from one or more onlineprogramming sources 116.

In an exemplary embodiment, the media distribution system 100 includes areceiving server 118 that receives, via network 106, data and/orinformation 160 pertaining to media programming available from theonline programming sources 116, formats the received data into a uniformformat, and provides the formatted data 170 to an associating server120. The associating server 120 receives, via network 106, the uniformlyformatted data 170 from the receiving server 118 along with data and/orinformation 172 pertaining to media programming available from theon-demand programming source 114. For each instance of media programmingreceived by the associating server 120, the associating server 120determines one or more identifiers that may be used by the mediadistribution system 100 to uniquely identify its associated mediaprogram and formats the data object for that respective instance of themedia program into another format that includes one or more fieldshaving values equal to the those identifiers. In this manner, theassociating server 120 associates each instance of media programmingreceived from receiving server 118 and/or on-demand source 114 with oneor more identifiers used by the media distribution system 100 to obtainassociated data 180 that may be provided to the host 102. The host 102receives, via network 106, the associated data 180 from the associatingserver 120 along with data and/or information 184 pertaining to mediaprograms stored by the media device 108 and data and/or information 182pertaining to media programming available from the broadcast source 112(e.g., using electronic program guide 122). In response to receivingsearch criteria from the client 104 indicative of a desired mediaprogram, the host 102 identifies an instance of the desired mediaprogram that is available from one content source within the mediadistribution system 100 (e.g., the DVR 110 or broadcast source 112), andthen utilizes one or more identifiers associated with that instance ofthe desired media program to identify additional instances of thedesired media program that are available from other content sourceswithin the media distribution system 100 (e.g., on-demand programmingsource 114, online programming sources 116, or the like).

The client 104 may be any device, component, module, hardware, softwareapplication and/or the like that is capable of communicating with thehost 102 over network 106. To that end, many different types of clients104 may be implemented with any sort of general or special purposehardware, software and/or firmware. In some embodiments, client 104 maybe a conventional personal computer, portable computer, workstationand/or other computing system. In still other embodiments, some types ofclients 104 may include personal digital assistants, video game players,mobile telephones, network appliances, remote controls, networkeddisplays and/or any other devices capable of communicating on network106.

In the embodiment shown in FIG. 1, client 104 executes any sort ofconventional browser or other application 105 that is compatible withstandard Internet, world wide web (WWW), transmission control protocoland/or internet protocol (TCP/IP), and/or other formats. Such browsers105 are typically capable of displaying active or other documentsformatted in accordance with published protocols (e.g., hypertext markuplanguage (HTML), extensible markup language (XML), and/or the like).Many browsers 105 are also capable of executing “plugin” applications,applets or the like. Such plugins may be formatted in accordance withActiveX, JAVA and/or any number of other formats. A number of commonlyused web browsers are available for a number of different computingplatforms, and the subject matter described herein is not limited to anyparticular browser application.

In some embodiments, client 104 further includes a media playerapplication 107. This media player 107 may be a standalone player, orthe media player 107 may be implemented as a plugin or other applet thatruns within browser 105 as desired. In some embodiments, media player107 is initially obtained from a networked host, such as host 102. Themedia player 107 may be retrieved on an as-needed basis in someembodiments, or may be stored at client 104 for subsequent execution.Some embodiments may not provide media viewing directly on client 104;such clients 104 may nevertheless be able to interact with host 102 tosearch for particular programming, to select programs to record, tochange preferences, or to take other actions related to media device 108as desired.

The network 106 is any digital or other communications network capableof transmitting messages between senders (e.g., client 104) andreceivers (e.g., host 102). In various embodiments, network 106 includesany number of public or private data connections, links or networkssupporting any number of communications protocols. Network 106 mayinclude the Internet, for example, or any other network. Such networksmay be based upon TCP/IP or other conventional protocols, although otherembodiments may use any type of alternate or successor protocols, asdesired. In various embodiments, network 106 may also incorporate awireless and/or wired telephone network, such as a cellularcommunications network for communicating with mobile phones, personaldigital assistants, and/or the like. Various embodiments of network 106may also incorporate any sort of wireless or wired local area networks,such as one or more IEEE 802.3 and/or IEEE 802.11 networks.

In the illustrated embodiment, the host 102 generally represents one ormore servers or another network host capable of interacting with aclient 104 to facilitate communications between the client 104 and themedia device 108 associated with the user or operator of the client 104via the host 102, and also, to provide information to the client 104regarding media programming available from various content sourceswithin the media distribution system 100, such as, for example,broadcast sources 112, on-demand sources 114, online programming sources116, or like, along with the user's DVR 110, as described in greaterdetail below. The host 102 may be implemented with a server computersystem or data processing system that is based upon any processor,architecture and/or operating system, and will typically be implementedusing any sort of conventional processing hardware 130, memory 132 andinput/output features 134. Various embodiments may be implemented usingdedicated or shared hardware servers; other implementations may make useof virtual server features as part of a “cloud computing” service, suchas any of the cloud computing services provided by any number ofproviders. Although FIG. 1 shows a single host 102 for convenience, manypractical embodiments of media distribution system 100 may provide acluster or other collection of multiple hosts 102 to support any desirednumber of simultaneous connections to multiple clients 104 and/ormultiple media devices 108. This cluster may also incorporateappropriate routing, load balancing, access and security mechanisms andor any number of other features. In various embodiments, each host 102is an actual or virtual computer system executing an operating system136 in conjunction with the processing hardware 130, memory 132 and/orI/O features 134 to provide a computing core that is capable ofexecuting a portal application 138, as well as any number of daemons,processes, applications or other instance modules as desired. Forexample, a portal application 138 could execute as a daemon on host 102,with connections to separate clients 104 being managed as separateprocesses or instances that communicate with portal application 138using features provided by operating system 136.

In an exemplary embodiment, the portal application 138 receives orotherwise obtains search criteria provided by the user and identifiesinstances of media programming satisfying the search criteria that areavailable within the media distribution system 100. In this regard, theportal application 138 may include a search engine configured toimplement one or more search processes using user-specified searchcriteria, such as search process 400 described in greater detail belowin the context of FIG. 4. As set forth below, the portal application 138utilizes one or more identifiers obtained from an identified instance ofmedia programming satisfying the search criteria that is available fromone content source to identify additional instances of that mediaprogramming that are available from other content sources within themedia distribution system 100. For example, the portal application 138may identify a media program stored on the user's DVR 110 that satisfiesthe user's search criteria, and using one or more identifiers associatedwith the stored program, the portal application 138 may identifyadditional instances of that media program that are available from oneor more other content sources 112, 114, 116 in the media distributionsystem 100. The portal application 138 provides a combined search resultto the user (e.g., within browser 105) that indicates the availabilityof the desired media program satisfying the search criteria from thevarious content sources 110, 112, 114, 116 within the media distributionsystem 100, as described in greater detail below in the context of FIGS.4-5.

In the illustrated embodiment, the media device 108 is any component,hardware and/or the like capable of receiving and processing mediacontent. In some embodiments, media device 108 is a set-top box (STB) orsimilar system that is able to receive television programming and/or torecord certain programs that can be viewed on a display device 140, suchas a television, monitor, liquid crystal display (LCD), light emittingdiode (LED) display, plasma display, or the like. Exemplary embodimentsof media device 108 will therefore include a receiver interface 142 forreceiving satellite, cable and/or broadcast programming signals frombroadcast sources 112, as well as a data storage medium 110 (e.g., ahard disk, flash memory, or another suitable non-volatile data storageelement) to support a digital video recorder (DVR) feature and/orfunctionality, a display interface 144 for providing imagery to thedisplay device 140, and a controller 146 that directs the operations ofthe media device 108 as appropriate. For convenience, but withoutlimitation, the data storage medium 110 is alternatively referred toherein as a DVR. Media device 108 may also include an interface 148 tonetwork 106 and/or an input/output interface 150 to a remote control orother device for providing user inputs to media device 108, asappropriate.

The components in media device 108 may be provided within a commonchassis or housing as shown in FIG. 1, although equivalent embodimentsmay implement media device 108 with any number of inter-connected butdiscrete components or systems. For example, in some embodiments, themedia device 108 may be realized as a combination of a STB and aplaceshifting device, wherein some features of the media device 108(e.g., the DVR 110, the receiver 142, the display interface 144, and/orI/Os 150) are implemented by the STB and other features of the mediadevice 108 (e.g., the network interface 148) are implemented by theplaceshifting device, wherein the placeshifting device works inconjunction with the STB to shift the viewing experience from a hometelevision (e.g., display device 140) to a viewing display on the clientdevice 104 (e.g., media player application 107) that is accessed vianetwork 106. Examples of placeshifting devices that may be used in someembodiments of media device 108 could include any of the variousSLINGBOX products available from Sling Media of Foster City, Calif.,although other products or servers could be used in other embodiments.Many different types of placeshifting devices are generally capable ofreceiving media content from an external source, such as any sort of DVRor STB, cable or satellite programming source, DVD player, and/or thelike. In other embodiments, placeshifting features are incorporatedwithin the same device that provides content-receiving or othercapabilities. Media device 108 may be a hybrid DVR and/or receiver, forexample, that also provides transcoding and placeshifting features.Examples of conventional placeshifting functions, features, systems andstructures are described in United States Patent Publication No.2006/0095471, although the features described herein could beequivalently applied with any number of other techniques and structuresin addition to those described in that particular publication. It shouldbe appreciated that FIG. 1 depicts merely one exemplary embodiment of amedia device 108, and in practice, the media device 108 may be logicallyand physically implemented in any manner to suit the needs of aparticular embodiment.

In the exemplary embodiment illustrated in FIG. 1, media device 108 iscapable of receiving digital broadcast satellite (DBS) signalstransmitted from a broadcast source 112, such as a satellite, using anantenna 152 that provides received signals to the receiver 142.Equivalent embodiments, however, could receive programming at receiver142 from any sort of cable connection, broadcast source, removablemedia, network service, external device and/or the like. The DVR 110feature stores recorded programming (e.g., broadcast programmingreceived via receiver 142) on a hard disk drive, memory, a networkedserver, or other storage medium as appropriate in response touser/viewer programming instructions, wherein the recorded programmingmay be subsequently viewed on display device 140 or client device 104via network 106. Content stored in DVR 110 may be any sort of file-basedprogramming or other content that is accessible to media device 108. Invarious embodiments, in addition to storing broadcast programming, theDVR 110 may also store programming received from another source withinthe media distribution system 100, such as, for example, programmingdownloaded from a video on-demand server. Additionally, content in DVR110 may be stored in any sort of compressed or uncompressed format, asdesired, and may be encoded or transcoded as desired for effectivereceipt, storage, retrieval and playing.

Controller 146 is any sort of hardware, software and/or firmware capableof directing the operations of media device 108. In various embodiments,controller 146 includes software or firmware logic residing in memoryand executing on any sort of processor, such as any sort ofmicroprocessor, microcontroller, digital signal processor or the like.In various embodiments, the controller 146 is based upon a “system on achip” (SoC) implementation that incorporates a hybrid microcontrollerwith memory, input/output and other features to perform the varioussignal processing and other actions of media device 108. Otherembodiments may implement controller 146 and/or the other features ofmedia device 108 with any number of discrete and/or integratedprocessing components (e.g., any sort of microprocessor ormicrocontroller), memories, input/output features and/or other featuresas desired.

In an exemplary embodiment, a user of the client 104 is able to connectto the portal application 138 supported by host 102 via the network 106,for example, by directing a browser 105 or similar program to a URL orother address associated with host 102 and/or portal application 138.After the user is successfully authenticated by the portal application138, the host 102 and/or portal application 138 establishes a connectionto the media device 108 that is associated with the user. Thisconnection is used to obtain information about programming stored at themedia device 108, such as, for example, a listing of the programs storedon DVR 110. Although not illustrated in FIG. 1, the media distributionsystem 100 may employ one or more intermediate messaging servers adaptedto facilitate communications between the host 102 and the media device108 to establish a direct connection that is not interfered with byfirewalls or other security mechanisms that may be implemented by thenetwork 106 and/or media device 108.

In the illustrated embodiment, the online programming sources 116generally represent providers of media programs for consumption overnetwork 106, and in various embodiments, the online programming sources116 may include studios or other content creators, syndicators or othercontent distributors, television networks, production houses, web orother network-based distributors, and/or any number of other sources asdesired. Each online programming source 116 may be implemented orrealized using any combination of devices, components, modules, servers,hardware, software applications and/or the like that is capable ofproviding information pertaining to the media programs provided by therespective online programming source 116. In an exemplary embodiment,each online programming source 116 provides a listing of media programsavailable from the respective online programming source 116 (e.g., bypublishing a data feed 160 or making available one or more folders thatincludes a listing of media programs). For each respective media programavailable from the online programming source 116, the data feed 160includes a corresponding media data object representative of therespective media program that includes fields for metadata and/or otherinformation pertaining to the respective media program, such as, forexample, the primary title or series title of the media program, asecondary title or episode title of the media program, actors and/oractresses featured in the media program, and/or other descriptiveinformation, along with other attributes pertaining to the mediaprogram, such as runtimes, ad points, bit rates and/or frame rates,sampling rates, and/or resource location information (e.g., a URL or IPaddress where the media program can be streamed and/or downloaded from).In practice, each online programming source 116 may provide media dataobjects in a different format than other online programming sources 116.For example, one online programming source 116 may provide media dataobjects in the Media RSS (MRSS) format, another online programmingsource 116 may provide media data objects in XML format, and yet anotheronline programming source 116 may provide media data objects in acomma-separated values (CSV) format.

In an exemplary embodiment, the on-demand programming source 114generally represents a provider of media programs for consumption overnetwork 106 on a pay-per-view basis (although some media programsprovided by the on-demand programming source 114 may be free), and maybe realized as any combination of devices, components, modules, servers,hardware, software applications and/or the like that is capable ofproviding information pertaining to the media programs provided by theon-demand programming source 114. As described above, the on-demandprogramming source 114 provides a data feed 172 that includes a listingof media programs available on a pay-per-view basis from the on-demandprogramming source 114, wherein for each respective media programavailable from the on-demand programming source 114, the data feed 172includes a corresponding media data object representative of therespective media program that includes fields for metadata and/or otherdescriptive information pertaining to the respective media program alongwith other attributes pertaining to the media program (e.g., pricingand/or availability information). In some embodiments, the on-demandprogramming source 114 provides media data objects in a format that isdifferent from the formats used by the online programming sources 116.For example, the on-demand programming source 114 may provide media dataobjects in the XML format while the online programming sources 116provide media data objects in the MRSS format. In other embodiments, theon-demand programming source 114 may provide media data objects in thesame format as the online programming sources 116.

Still referring to FIG. 1, in an exemplary embodiment, the mediadistribution system 100 includes an electronic program guide 122, whichmay be realized as a server, a database, or another device operating onthe network 106 that maintains information pertaining to current and/orfuture broadcasts (or airings) of media programs that are available tobe received from broadcast source 112 (e.g., by media device 108 viareceiver 142). Such program guides are available from Tribune MediaServices and many other suppliers as appropriate. Additionally, themedia distribution system 100 includes a media program database 124 thatincludes verified or validated metadata and/or other descriptiveinformation for a vast array of media programs. For example, the mediaprogram database 124 may contain metadata and/or other descriptiveinformation pertaining to substantially all of the media programs thatmay be available from one or more content sources within mediadistribution system 100 (e.g., information pertaining to any mediaprograms that have previously been aired by a broadcast source 112,along information pertaining to any movie that has been presented intheaters, made available on-demand, or released for individual use(e.g., on digital video disc (DVD) or the like)). Such metadatadatabases are available from Tribune Media Services and many othersuppliers as appropriate. For each media program having a record (orentry) in the media program database 124, the media program database 124maintains a media data object that includes fields of metadataassociated with that media program along with fields of programidentifiers that may be used to identify that media program record, asdescribed in greater detail below. In an exemplary embodiment, theprogram guide 122 and the media program database 124 are cooperativelyconfigured such that the program guide 122 and the media programdatabase 124 use the same program identifiers to uniquely identify eachmedia program.

In the illustrated embodiment, the receiving server 118 is configured toobtain or otherwise receive the data feeds 160 provided by the onlineprogramming sources 116, uniformly format the data objects provided bythe online programming sources 116 into a common format, and provide adata feed 170 containing the uniformly formatted media data objects tothe associating server 120, as described in greater detail below in thecontext of FIG. 2. The associating server 120 is configured to obtain orotherwise receive the uniformly formatted data feed 170 provided by thereceiving server 118 along with the data feed 172 provided by theon-demand programming source 114, format the media data objects providedby the on-demand programming source 114 and/or receiving server 118 toinclude, for each media data object, fields for the program identifiersused by media program database 124 to identify its associated mediaprogram, and provide one or more data feeds 180 that contain associatedmedia data objects corresponding to online media programs available fromonline programming sources 116 and on-demand media programs availablefrom on-demand programming source 114, as described in greater detailbelow in the context of FIG. 3. The host 102 obtains or otherwisereceives the associated data objects provided by the associating server120, and utilizes the program identifiers to identify instances of adesired media program that are available from the online programmingsources 116 and/or on-demand source 114, as described in greater detailbelow in the context of FIG. 4.

In the illustrated embodiment of FIG. 1, the receiving server 118, theassociating server 120, and the host 102 are each realized as discretecomponents in the media distribution system 100. In this regard, thereceiving server 118 may be realized as one or more servers, devices,components, modules, hardware, software applications, or the likeoperating on the network 106 to perform the functionality describedherein, and the associating server 120 may be realized as a separatearrangement of one or more servers, devices, components, modules,hardware, software applications, or the like operating on the network106 to perform the functionality described herein. It should be noted,however, that in other embodiments, the receiving server 118 may beintegrated with and/or otherwise implemented using the same hardware asassociating server 120 and/or host 102, and likewise, the associatingserver 120 may be integrated with and/or otherwise implemented using thesame hardware as host 102. For example, the host 102, receiving server118, and associating server 120 may each be implemented as a virtualserver that shares hardware resources with and/or operates on the samephysical hardware as the other virtual servers.

Referring now to FIG. 2, in an exemplary embodiment, a mediadistribution system 100 may be configured to perform a formattingprocess 200 and additional tasks, functions, and operations describedbelow. The various tasks may be performed by software, hardware,firmware, or any combination thereof. For illustrative purposes, thefollowing description may refer to elements mentioned above inconnection with FIG. 1. In practice, the tasks, functions, andoperations may be performed by different elements of the mediadistribution system 100. That said, in exemplary embodiments, theformatting process 200 is performed by the receiving server 118. Itshould be appreciated that any number of additional or alternative tasksmay be included, and may be incorporated into a more comprehensiveprocedure or process having additional functionality not described indetail herein.

Referring to FIG. 2, and with continued reference to FIG. 1, theformatting process 200 begins by obtaining media data objectscorresponding to media programs available from one or more contentsources within a media distribution system (task 202). In an exemplaryembodiment, the receiving server 118 obtains, from each onlineprogramming source 116 within the media distribution system 100, mediadata objects corresponding to media programs that have been recentlyprovided or otherwise made available by the respective onlineprogramming source 116. For example, each online programming source 116may publish a data feed 160 (or a folder) that contains media dataobjects corresponding to all of the media programs that are currentlyavailable for consumption from that online programming source 116. Foreach respective online programming source 116, the receiving server 118accesses or otherwise monitors its data feed 160 (or folder), identifiesrecently added media data objects, and downloads or otherwise obtainsthose media data objects from the respective online programming source116. In this regard, the receiving server 118 may periodically poll thedata feeds 160 (or folders) provided by the online programming sources116 at regular intervals and use the timestamps of the media dataobjects made available by the online programming sources 116 to identifyor otherwise determine those media data objects that have been recentlymade available by a respective online programming source 116 in the timeperiod after the preceding polling of that respective online programmingsource 116. For each online programming source 116, the receiving server118 may compile a list or other data structure that consists of the allof the media data objects obtained from that online programming source116.

In an exemplary embodiment, after obtaining media data objectscorresponding to available media programs, the formatting process 200continues by uniformly formatting each of the obtained media dataobjects (task 204). As described above, each online programming source116 may provide media data objects that are formatted in accordance witha different formatting standard (e.g., XML, MRSS, CSV, and the like).For each online programming source 116, the receiving server 118 mayexecute one or more scripts determine or otherwise identify theparticular format that is used by that respective online programmingsource 116. After determining the format used by an individual onlineprogramming source 116, the receiving server 118 executes one or moreadditional scripts to parse the data structure of media data objectsobtained from that online programming source 116, and for each obtainedmedia data object, convert that media data object from the format usedby that online programming source 116 to a uniform format used for allof the media data objects obtained from the online programming sources116. For example, in accordance with one embodiment, the receivingserver 118 formats all of the media data objects received from theonline programming sources 116 into the MRSS format, wherein for onlineprogramming sources 116 providing media data objects in a format otherthan the MRSS format, the receiving server 118 executes one or morescripts that map or otherwise translate the fields of metadata for themedia data objects provided by those online programming sources 116 tothe appropriate locations of those fields in corresponding MRSS mediadata objects.

After uniformly formatting the obtained media data objects, theformatting process 200 continues by aggregating or otherwise combiningthe uniformly formatted media data objects to create a single data feedof uniformly formatted media data objects (task 206). For example, afterconverting each obtained media data object from each online programmingsource 116 into the uniform format, the receiving server 118 mayconcatenate or otherwise combine the data structures of uniformlyformatted media data objects to create a single data feed 170 ofuniformly formatted media data objects. In this regard, all of the mediadata objects in the data feed 170 have the same format. As described ingreater detail below, the data feed 170 is made available or otherwiseprovided to the associating server 120 for subsequent data managementand/or processing.

Referring now to FIG. 3, in an exemplary embodiment, a mediadistribution system 100 may be configured to perform an associatingprocess 300 and additional tasks, functions, and operations describedbelow. The various tasks may be performed by software, hardware,firmware, or any combination thereof. For illustrative purposes, thefollowing description may refer to elements mentioned above inconnection with FIG. 1. In practice, the tasks, functions, andoperations may be performed by different elements of the mediadistribution system 100. That said, in exemplary embodiments, theassociating process 300 is performed by the associating server 120. Itshould be appreciated that any number of additional or alternative tasksmay be included, and may be incorporated into a more comprehensiveprocedure or process having additional functionality not described indetail herein.

Referring to FIG. 3, and with continued reference to FIGS. 1-2, theassociating process 300 begins by obtaining media data objectscorresponding to media programs available from one or more contentsources within a media distribution system (task 302). In an exemplaryembodiment, the associating server 120 obtains, from receiving server118, uniformly formatted media data objects corresponding to mediaprograms that have been recently provided or otherwise made available bythe online programming sources 116. As described above, the receivingserver 118 creates and publishes a data feed 170 that contains mediadata objects corresponding to media programs available from onlineprogramming sources 116 that are in a uniform format. The associatingserver 120 accesses or otherwise monitors the data feed 170, identifiesthe recently added media data objects, and downloads or otherwiseobtains those media data objects from the receiving server 118. Asdescribed above, the associating server 120 may periodically access thedata feed 170 at regular intervals and use timestamps to identify orotherwise determine those media data objects that have been added to thedata feed 170 in the time period after the preceding polling of the datafeed 170. The associating server 120 downloads the identified media dataobjects from the data feed 170 and maintains a list or other datastructure that consists of the media data objects obtained from thereceiving server 118 and/or data feed 170. In an exemplary embodiment,the on-demand programming source 114 also provides a data feed 172 (orpublishes a folder) that contains media data objects corresponding toall of the media programs that are currently available from on-demandprogramming source 114, wherein the associating server 120 accesses orotherwise monitors the data feed 172, identifies the recently addedmedia data objects, downloads or otherwise obtains those media dataobjects from the on-demand programming source 114, and maintains a listor other data structure that consists of the media data objects obtainedfrom the on-demand programming source 114 and/or data feed 172 in asimilar manner as described above for receiving server 118 and/or datafeed 170.

In an exemplary embodiment, the associating process 300 continues bydetermining or otherwise identifying, for each newly obtained media dataobject, one or more program identifiers associated with the mediaprogram corresponding to that respective media data object, and formatsthat media data object into a different format that includes fields forthe program identifiers associated with its associated media program(tasks 304, 306). In this regard, each media program has a set of one ormore program identifiers that are unique to that media program, suchthat each media program may be distinguished from other media programsand uniquely identified based on those program identifiers. As describedabove, in an exemplary embodiment, the program identifiers are used bythe media program database 124 to index media programs and associatemetadata and/or other descriptive information with the appropriate mediaprograms. For example, for each media program, the media programdatabase 124 includes a media data object having fields for the metadataand/or descriptive information for that media program along with one ormore fields corresponding to the program identifiers for that mediaprogram, wherein the combination of values for those program identifierfields are unique to that media program.

In an exemplary embodiment, the associating server 120 analyzes one ormore metadata fields of each newly obtained media data object fromreceiving server 118 and/or on-demand programming source 114 to matchthat respective media data object to its associated media program in themedia program database 124. For example, for an individual media dataobject obtained from receiving server 118, the associating server 120may obtain a subset of the metadata associated with that media dataobject (e.g., a series title, an episode title, a lead actor/actress, orthe like) and perform one or more algorithms to match that subset ofmetadata to the metadata associated with an individual media data objectin the media program database 124. After matching the subset of themetadata for the obtained media data object to an individual media dataobject in the media program database 124, the associating server 120formats the obtained media data object into a different format toinclude one or more program identifier fields, obtains the values of theprogram identifier fields of the matching media data object in the mediaprogram database 124, and substitutes or otherwise utilizes the obtainedvalues for the program identifier fields of the matching media dataobject in media program database 124 as the values for the programidentifier fields of the newly formatted media data object. In thismanner, the obtained media data objects are associated with the metadataand/or descriptive information for its associated media program that ismaintained by the media program database 124 based on the values of itsprogram identifier fields. In addition to program identifier fields, theassociating server 120 may format the obtained media data object toinclude additional identifier fields (e.g., genre identifier fields),obtain the values of those additional identifier fields from thematching media data object in the media program database 124, andsubstitute or otherwise utilize the obtained values as the values forthose identifier fields of the obtained media data object. In anexemplary embodiment, the associating server 120 repeats the steps ofobtaining a subset of metadata associated with an obtained media dataobject, matching that subset of metadata to metadata associated with anindividual media data object in the media program database 124, andformatting the obtained media data object into a different format thatincludes one or more program identifier fields corresponding thematching media data object in media program database 124 for each mediadata object obtained from data feed 170 (or receiving server 118) andfor each media object obtained from data feed 172 (or on-demandprogramming source 114). It should be noted that by virtue of the mediadata objects provided by data feed 170 being uniformly formatted, theassociating server 120 may more readily identify and obtain values ofthe desired metadata fields to be used to match the obtained media dataobjects to records in the media program database 124 when matching mediadata objects from data feed 170 to records in media program database124.

In an exemplary embodiment, the associating process 300 continues bycreating one or more data feeds containing associated media data objects(task 308). In this regard, the associating server 120 combines theassociated media data objects obtained from the data feeds 170, 172and/or content sources 114, 116 to create data feeds 180 of media dataobjects that are associated with records in media program database 124.For example, the associating server 120 may provide one data feedcontaining media data objects corresponding to media programs availablefrom online programming sources 116 and another data feed containingmedia data objects available from the on-demand programming source 114.Additionally, the associating server may provide a data feed containingmedia data objects corresponding to the media programs maintained in theprogram database 124. As described in greater detail below, the datafeeds 180 are made available or otherwise provided to the host server102. In this manner, each media data object provided to the host 102from the associating server 120 includes one or more program identifierfields that associate it with the record for its associated mediaprogram in the media program database 124, and by virtue of the sameprogram identifiers being used by the media program database 124 andprogram guide 122 as described above in the context of FIG. 1, eachmedia data object provided to the host 102 from the associating server120 is also associated with instances of its associated media programavailable from broadcast sources 112 and/or the user's DVR 110. As setforth below, the host server 102 utilizes the program identifier fieldsto identify instances of media programs satisfying user-specified searchcriteria that are available from different sources within the mediadistribution system 100 rather than searching each respective contentsource using the search criteria in an attempt to match the searchcriteria to the metadata of the media data objects provided by eachrespective content source.

Referring now to FIG. 4, in an exemplary embodiment, a mediadistribution system 100 may be configured to perform a search process400 and additional tasks, functions, and operations described below. Thevarious tasks may be performed by software, hardware, firmware, or anycombination thereof. For illustrative purposes, the followingdescription may refer to elements mentioned above in connection withFIG. 1. In practice, the tasks, functions, and operations may beperformed by different elements of the media distribution system 100.That said, in exemplary embodiments, the search process 400 is performedby the host server 102 and/or portal application 138. It should beappreciated that any number of additional or alternative tasks may beincluded, and may be incorporated into a more comprehensive procedure orprocess having additional functionality not described in detail herein.

Referring to FIG. 4, and with continued reference to FIGS. 1-3, thesearch process 400 begins by receiving or otherwise obtaining searchableinformation pertaining to the various media programs available from thevarious content sources within a media distribution system (task 402).In an exemplary embodiment, the host server 102 obtains, fromassociating server 120, the associated media data objects correspondingto media programs that are provided or otherwise made available by theon-demand programming source 114 and/or online programming sources 116.For example, the host server 102 may access or otherwise monitor thedata feeds 180, identify recently added media data objects in thevarious data feeds 180, download or otherwise obtain those media dataobjects from the associating server 120, and store the downloaded mediadata objects locally (e.g., in memory 132) to create localrepresentations of the data feeds 180 that mirror or otherwise containall of the media data objects of data feeds 180. In a similar manner asdescribed above, the host server 102 may periodically access the datafeeds 180 at regular intervals and use timestamps to identify orotherwise determine those media data objects that have been modified oradded to the data feeds 180 in the time period after the precedingpolling of the data feeds 180. The host server 102 downloads theidentified media data objects from the data feeds 180 and maintains, inmemory 132, lists or other data structures that consists of the mediadata objects obtained from the associating server 120 and/or data feeds180. In this manner, the host server 102 obtains and maintains listingsof media data objects provided by the online programming sources 116 andon-demand programming source 114, wherein the fields of metadata and/orother descriptive information of the media data objects providesearchable information pertaining to the media programs available fromthe online programming sources 116 and on-demand programming source 114.In the illustrated embodiment, the program guide 122 also provides adata feed 182 (or publishes a folder) that contains media data objectscorresponding to all of the media programs that are either currentlyavailable from broadcast sources 112 or will be available from broadcastsources 112 within a predetermined amount of time (e.g., within the nexttwo weeks). Likewise, the host server 102 accesses or otherwise monitorsthe data feed 182 (or folder), identifies the recently added media dataobjects, downloads or otherwise obtains those media data objects fromthe program guide 122 and/or data feed 182, and stores or otherwisemaintains (e.g., in memory 132) a listing of media data objects providedby the program guide 122, wherein the fields of metadata and/or otherdescriptive information of the media data objects provide searchableinformation pertaining to the media programs available from thebroadcast source 112.

In an exemplary embodiment, the host server 102 also obtains a listingof the stored media programs on the user's DVR 110 and/or media device108. For example, after the portal application 138 successfullyauthenticates the user, the host 102 and/or portal application 138establishes a connection to the media device 108 that is associated withthe user, downloads or otherwise obtains media data objectscorresponding to the media programs stored at the media device 108and/or DVR 110, and stores or otherwise maintains (e.g., in memory 132)the downloaded media data objects to create a local representations ofthe stored media programs on the media device 108 and/or DVR 110. Thus,after a user has been authenticated by the portal application 138, thehost 102 and/or portal application 138 will have obtained or otherwisehave access to a listing of media data objects from media device 108and/or DVR 110 corresponding to the user's stored media programs, inaddition to the listing of media data objects from program guide 122corresponding to media programs that are or will be available frombroadcast source 112, the listing of media data objects from associatingserver 120 corresponding to media programs that are available fromon-demand programming source 114, and the listings of media data objectsfrom associating server 120 corresponding to media programs that areavailable from online programming sources 116.

In an exemplary embodiment, the search process 400 continues byreceiving search criteria from the user (task 404). For example, theportal application 138 may provide or otherwise display on the client104 (e.g., within browser 105) a graphical user interface element, suchas a text box, adapted to receive user input indicative of desiredsearch criteria. Subsequently, the user of the client device 104 mayprovide desired search criteria, which typically includes one or morepieces of metadata that are indicative of a desired media program, suchas, for example, a movie title, a television series title, an episodetitle, an actor/actress name, or the like.

After receiving search criteria, the search process 400 continues byidentifying a media data object satisfying the received search criteria(task 406). In this regard, the portal application 138 searches for amedia data object that matches (or most closely matches) the searchcriteria. For example, as described above, the media distribution system100 of FIG. 1 includes a media program database 124 that that includesverified or validated metadata for substantially every media programthat could possibly be provided by one of the content sources in themedia distribution system 100. In such embodiments, the portalapplication 138 may access the local representation of the data feed 180obtained from associating server 120 corresponding to the media programdatabase 124, and perform various searching logic and algorithms tomatch a media data object in the media program database 124 to thesearch criteria. In other embodiments, the portal application 138 maysearch a content source within the media distribution system 100 that islikely to have higher quality metadata associated with its media dataobjects, such as the DVR 110 or program guide 122. In yet otherembodiments, the user may identify a desired content source (e.g., DVR110) to be searched. In such embodiments, the portal application 138 mayinitially access the local representation of the media data objectsobtained from media device 108 and/or DVR 110 corresponding to theuser's stored media programs, and perform various searching logic andalgorithms to match a media data object obtained from the media device108 and/or DVR 110 to the search criteria. If the portal application 138fails to identify a media data object matching the search criteria froma desired (or default) content source, the portal application 138 mayproceed by searching for a media data object matching the searchcriteria from the media program database 124 or another content sourcewithin the media distribution system 100 that is most likely to have amedia data object matching the search criteria.

In response to identifying a media data object satisfying the receivedsearch criteria from a first content source in the media distributionsystem, the search process 400 continues by obtaining the programidentifiers associated with the matching media data object andidentifying associated media data objects available from other contentsources in the media distribution system using the obtained programidentifiers (tasks 408, 410). As described above, in an exemplaryembodiment, each media program has a set of one or more programidentifiers that may be utilized by the media program database 124and/or program guide 122 to uniquely identify that media program, andeach media data object corresponding to media programs available fromon-demand programming source 114 and online programming sources 116obtained from the associating server 120 includes the programidentifiers corresponding to its associated media program by virtue ofthe associating process 300 described above. In this regard, in responseto identifying a media data object satisfying the search criteria, theportal application 138 and/or host server 102 determines target programidentifiers for searching the other content sources in the mediadistribution system 100 by obtaining the program identifiers of thematching media data object, and performs various searching logic andalgorithms on the media data objects corresponding to media programsavailable from the other content sources in the media distributionsystem 100 to identify instances of media programs having values for theprogram identifier fields that match the target program identifiers thatare available from other content sources within the media distributionsystem 100. For example, in response to identifying a media data objectin the media program database 124 having metadata that satisfies orotherwise matches the search criteria, the portal application 138 and/orhost server 102 obtains the program identifiers of the matching mediadata object for use as target program identifiers, and performs varioussearching logic and algorithms on the media data objects correspondingto media programs available from the other content sources 110, 112,114, 116 in the media distribution system 100 to identify media dataobjects having values for the program identifier fields equal to thetarget program identifiers. In this manner, the portal application 138and/or host server 102 may expeditiously identify all of the instancesof the desired media program satisfying the user's search criteria thatare available from the various content sources 110, 112, 114, 116 withinthe media distribution system 100 without having to search for thesearch criteria the metadata fields of the media data objects providedby each respective content source 110, 112, 114, 116.

For example, if the user searches for “Citizen Kane”, the portalapplication 138 and/or host server 102 identifies the media data objectin media program database 124 having a title field that matches “CitizenKane” and obtains the values for the program identifiers for thatmatching media data object. The portal application 138 and/or host 102searches the listing of media data objects obtained from program guide122 for any media data objects having values for their programidentifier fields that are equal to the values obtained for the “CitizenKane” object in media program database 124 to identify any current orfuture airings of “Citizen Kane” that may be viewed and/or recorded frombroadcast source 112. Likewise, the portal application 138 searches thelisting of media data objects obtained from DVR 110 for any media dataobjects having values for their program identifier fields that are equalto the values obtained for the “Citizen Kane” object in media programdatabase 124 to identify any instances of “Citizen Kane” that are storedon the user's DVR 110, searches the listing of media data objectsobtained from on-demand programming source 114 for any media dataobjects having values for their program identifier fields that are equalto the values obtained for the “Citizen Kane” object in media programdatabase 124 to identify any instances of “Citizen Kane” that areavailable on-demand, and searches the listing of media data objectsobtained from online programming sources 116 for any media data objectshaving values for their program identifier fields that are equal to thevalues obtained for the “Citizen Kane” object in media program database124 to identify any instances of “Citizen Kane” that are availableonline.

Referring again to FIG. 4, and with continued reference to FIGS. 1-3,the search process 400 continues by aggregating or otherwise combiningthe media data objects available from various content sources in themedia distribution system that satisfy the search criteria to obtain acombined search result and providing the combined search result to theuser (tasks 412, 414). In this regard, the portal application 138 and/orhost server 102 may create an aggregate listing of media data objectssatisfying the search criteria by concatenating or otherwise combiningthe associated media data objects identified from the various contentsources in the media distribution system 100 with the initially matchedmedia data object. After the portal application 138 and/or host server102 has searched each of the content sources 110, 112, 114, 116 in themedia distribution system 100, the portal application 138 and/or hostserver 102 presents or otherwise displays the combined search result onthe client device 104 (e.g., within browser 105). In this regard, theportal application 138 may redirect to or otherwise present a web pagewithin browser 105 that visually presents each instance the mediaprogram satisfying the search criteria in association with therespective content source that instance of the media program isavailable from. For example, the portal application 138 may display awebpage that lists instances of “Citizen Kane” available on the user'sDVR 110 and/or media device 108, followed by any current or upcomingairings of “Citizen Kane” that will be available from broadcast source112, followed by on-demand offerings of “Citizen Kane” available fromon-demand programming source 114 and/or any online offerings of “CitizenKane” available from online programming sources 116. It should beappreciated that the presentation of the instances of matching mediaprograms may be performed in a variety of different manners, and thematching media programs available from the content sources within themedia distribution system 100 may be ordered in various ways (e.g., tosuit the preferences of the user). Accordingly, the subject matterdescribed herein is not intended to be limited to any particular mannerof presenting the combined search results to the user.

Referring to FIG. 5, and with continued reference to FIGS. 1-4, userinterface display 500 that may be presented by the portal application138 (e.g., within browser 105) that includes a graphical representationof a combined search result 502 for a particular media program, such astelevision series “Series Title A.” As described above, to obtain thecombined search result 502, the portal application 138 and/or hostserver 102 may initially search the local representation of the datafeed 180 corresponding to media program database 124 for a media dataobject having metadata (e.g., a series title field) matching orotherwise corresponding to “Series Title A” and obtains the values forthe program identifiers for that matching media data object. Using thevalues for the program identifiers corresponding to “Series Title A”,the portal application 138 searches the listing of media data objectsavailable from the user's DVR 110, online programming sources 116,on-demand programming source 114, and broadcast source 112 (e.g., usingmedia data objects obtained from program guide 122) to identify anymedia data objects having values for their program identifier fieldsthat are equal to the target program identifier values obtained from the“Series Title A” object in media program database 124. The portalapplication 138 aggregates all the instances of media data objectsassociated with the “Series Title A” object in media program database124, and presents or otherwise displays the combined search result 502on the client device 104 (e.g., within browser 105). As illustrated, theportal application 138 may present instances of “Series Title A” thatare recorded on DVR 110 in a first region 504 of the display 500,present instances of “Series Title A” available from broadcast source112 in a second region 506 of the display 500, present instances of“Series Title A” available from an online programming source 116 in athird region 508 of the display 500, and present instances of “SeriesTitle A” available on-demand from on-demand programming source 114 in afourth region 510 of the display 500. As noted above, the combinedsearch result may be presented in a variety of different manners, andthe subject matter described herein is not intended to be limited to anyparticular manner of presenting combined search results to the user.

A user may utilize the combined search result 502 to make adetermination as to the manner in which he/she would like to view thedesired media program. For example, in some situations, the user maydesire to view a stored recording of the “Series Title A” from theuser's DVR 110, in which case, the user may interact with the mediadevice 108 and/or DVR 110 over the network 106 using graphical userinterface elements 512 displayed by the portal application 138 toindicate a desire to placeshift and view a stored instance of “SeriesTitle A” on the client device 104. In response to a user indicating adesire to play an episode of “Series Title A”, the portal application138 creates a placeshifting session by establishing a connection betweenthe client device 104 and the media device 108 to stream or otherwisepresent the recorded episode on the DVR 110 and/or media device 108 tothe user within media player 107. In other situations, the user maydesire to record an upcoming airing of an episode of “Series Title A” onthe user's DVR 110, in which case, the user may interact with the mediadevice 108 and/or DVR 110 over the network 106 using graphical userinterface elements 514 displayed by the portal application 138 toindicate a desire to record an upcoming episode of “Series Title A” onthe user's DVR 110. In response to a user indicating a desire to recordan upcoming episode of “Series Title A”, the portal application 138communicates with the media device 108 and/or DVR 110 to schedule arecording of the selected airing. In yet other situations, the user maydesire to view the desired media program from a online programmingsource 116 or the on-demand programming source 114, in which case, theuser may utilize graphical user interface elements 516, 518 presented bythe portal application 138 to interact with the desired content source114, 116 and establish a connection between the client device 104 andthe desired content source 114, 116 for streaming or otherwise view thedesired media program within media player 107.

The general systems, structures and techniques described above may beinter-combined, enhanced, modified and/or otherwise implemented toprovide any number of different features. In particular, the term“exemplary” is used herein to represent one example, instance orillustration that may have any number of alternates. Any implementationdescribed herein as “exemplary” should not necessarily be construed aspreferred or advantageous over other implementations.

Techniques and technologies may be described herein in terms offunctional and/or logical block components, and with reference tosymbolic representations of operations, processing tasks, and functionsthat may be performed by various computing components or devices. Itshould be appreciated that the various block components shown in thefigures may be realized by any number of hardware, software, and/orfirmware components configured to perform the specified functions. Forexample, an embodiment of a system or a component may employ variousintegrated circuit components, e.g., memory elements, digital signalprocessing elements, logic elements, look-up tables, or the like, whichmay carry out a variety of functions under the control of one or moremicroprocessors or other control devices. Furthermore, the connectinglines shown in the various figures contained herein are intended torepresent exemplary functional relationships and/or physical couplingsbetween the various elements. It should be noted that many alternativeor additional functional relationships or physical connections may bepresent in an embodiment of the subject matter. In addition, certainterminology may also be used herein for the purpose of reference only,and thus are not intended to be limiting. For example, terms such as“first,” “second” and other such numerical terms referring to structuresdo not imply a sequence or order unless clearly indicated by thecontext.

While several exemplary embodiments have been presented in the foregoingdetailed description, it should be appreciated that a vast number ofalternate but equivalent variations exist, and the examples presentedherein are not intended to limit the scope, applicability, orconfiguration of the invention in any way. To the contrary, variouschanges may be made in the function and arrangement of the variousfeatures described herein without departing from the scope of the claimsand their legal equivalents.

What is claimed is:
 1. A server comprising: a memory having storedtherein a first listing of media programs available from a first contentsource and a second listing of media programs available from a secondcontent source; and a processor coupled to the memory, the processorbeing configured to receive search criteria indicative of a desiredmedia program, identify a first media data object in the first listingcorresponding to a first instance of the desired media program availablefrom the first content source, obtain a program identifier from thefirst media data object, identify a second media data object in thesecond listing corresponding to a second instance of the desired mediaprogram available from the second content source, and provide a combinedsearch result indicating availability of the desired media program fromthe first content source and the second content source.
 2. The server ofclaim 1, wherein the first content source is a digital video recorder.3. The server of claim 2, wherein the processor obtains the firstlisting of media programs from the digital video recorder and stores thefirst listing in the memory.
 4. The server of claim 2, wherein thesecond content source is selected from a group consisting of an onlineprogramming source and an on-demand programming source.
 5. The server ofclaim 1, the server being coupled to a network, wherein: the firstcontent source is a media device coupled to the network; and the secondcontent source is selected from a group consisting of an onlineprogramming source coupled to the network and an on-demand programmingsource coupled to the network.
 6. The server of claim 5, wherein theprocessor obtains the first listing of media programs from the mediadevice, stores the first listing in the memory, obtains the secondlisting of media programs from an associating server coupled to thenetwork, and stores the second listing in the memory.
 7. The server ofclaim 1, wherein the first content source is a broadcast source.
 8. Theserver of claim 7, wherein the processor obtains the first listing ofmedia programs from a program guide and stores the first listing in thememory.
 9. The server of claim 7, wherein the second content source isselected from a group consisting of an online programming source and anon-demand programming source.
 10. The server of claim 1, the serverbeing coupled to a network, wherein the processor obtains the secondlisting of media programs from an associating server coupled to thenetwork, the associating server being configured to format each mediadata object of the second listing to include a respective programidentifier associated with the respective media program corresponding tothe respective media data object.
 11. A method executable by aprocessing system to identify instances of a desired media programavailable within a media distribution system, the method comprising:searching, by the processing system, a first listing of mediaprogramming available from a first content source using search criteriaindicative of the desired media program to identify a first instance ofthe desired media program available from the first content source;obtaining, by the processing system, a target program identifierassociated with the desired media program from the first instance;identifying, by the processing system, a second instance of the desiredmedia program in a second listing of media programming available from asecond content source using the target program identifier, the secondcontent source being different from the first content source; andproviding, by the processing system, a combined search result thatindicates availability of the desired media program from the firstcontent source and the second content source.
 12. The method of claim11, wherein the processing system is a host server communicating with aclient device over a network, the search criteria being provided by auser of the client device, wherein the method further comprisesreceiving, by the host server, the search criteria from the clientdevice.
 13. The method of claim 12, wherein providing the combinedsearch result comprises displaying a graphical representation of thecombined search result in an application on the client device.
 14. Themethod of claim 11, further comprising: obtaining, by an associatingserver communicating with the processing system, a plurality of mediadata objects, each media data object corresponding to a media programavailable from the second content source; determining, by theassociating server, for each media data object, a respective programidentifier associated with its corresponding media program; andformatting, by the associating server, each media data object to includea field having a value equal to the respective program identifier,resulting in a plurality of formatted media data objects, whereinidentifying the second instance comprises searching, by the processingsystem, the plurality of formatted media data objects for a formattedmedia data object having the value for the field equal to the targetprogram identifier.
 15. The method of claim 14, further comprising:obtaining, by a receiving server communicating with the associatingserver, a first plurality of media data objects from a first onlineprogramming source and a second plurality of media data objects from asecond online programming source; and uniformly formatting, by thereceiving server, each media data object of the first plurality and thesecond plurality, resulting in the plurality of media data objectsobtained by the associating server.
 16. A method of identifyinginstances of a desired media program available within a mediadistribution system, the method comprising: searching a first listing ofmedia programming available from a first content source in the mediadistribution system using search criteria indicative of the desiredmedia program to identify a first media data object corresponding to afirst instance of the desired media program available from the firstcontent source, the first media data object having a target programidentifier associated therewith; obtaining the target program identifierassociated with the desired media program from the first media dataobject corresponding to the first instance of the desired media program;obtaining a second media data object corresponding to the desired mediaprogram available from a second content source in the media distributionsystem, the second content source being different from the first contentsource; formatting the second media data object to include the targetprogram identifier to associate the second media data object with thedesired media program; in response to identifying the first media dataobject based on the search criteria: obtaining the target programidentifier from the first media data object; and identifying the secondmedia data object corresponding to a second instance of the desiredmedia program in a second listing of media programming available fromthe second content source using the target program identifier; andproviding a combined search result that indicates availability of thefirst instance of the desired media program from the first contentsource and availability of the second instance of the desired mediaprogram from the second content source.
 17. The method of claim 16,further comprising: determining the second media data object correspondsto the desired media program based on one or more metadata fields of thesecond media data object; and obtaining the target program identifierassociated with the desired media program from a database maintainingassociations between program identifiers and media programs prior toformatting the second media data object.
 18. The method of claim 16,further comprising: receiving, by a host server, the search criteriafrom a client device coupled to the host server over a network; andobtaining, by the host server, stored media programming available from amedia device coupled to the network, wherein searching the first listingcomprises identifying, by the host server, the first media data objectin the stored media programming available from the media device usingthe search criteria.
 19. The method of claim 18, wherein obtaining thesecond media data object comprises obtaining, by an associating servercoupled to the host server over the network, the second media dataobject from an online programming source or an on-demand programmingsource, the associating server formatting the second media data objectto include the target program identifier and providing the second mediadata object to the host server.
 20. The method of claim 16, furthercomprising: receiving, by a host server coupled to a network, the searchcriteria from a client device coupled to the network; and obtaining, bythe host server, upcoming media programming available from a broadcastsource, wherein: searching comprises identifying, by the host server,the first media data object in the upcoming media programming availablefrom the broadcast source using the search criteria; and obtaining thesecond media data object comprises obtaining, by an associating servercoupled to the host server over the network, the second media dataobject from an online programming source or an on-demand programmingsource, the associating server formatting the second media data objectto include the target program identifier and providing the second mediadata object to the host server.